{
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "# Python机器学习基础综合实战\n",
        "\n",
        "来源：《python机器学习及实践》\n",
        "\n以“良/恶性乳腺癌肿瘤预测”问题了解Python的基本编程元素和机器学习的基本步骤。"
      ],
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# 导入pandas用于读取数据\n",
        "import pandas as pd"
      ],
      "outputs": [],
      "execution_count": 1,
      "metadata": {
        "collapsed": true
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# 读入数据， train后缀变量保存训练集，test后缀变量保存测试集\n",
        "df_train = pd.read_csv('../Datasets/Breast-Cancer/breast-cancer-train.csv')\n",
        "\ndf_test = pd.read_csv('../Datasets/Breast-Cancer/breast-cancer-test.csv')"
      ],
      "outputs": [],
      "execution_count": 2,
      "metadata": {
        "collapsed": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# 选取'Clump Thickness'与'Cell Size'作为特征，构建测试集中的正负分类样本\n",
        "df_test_negative = df_test.loc[df_test['Type'] == 0][['Clump Thickness', 'Cell Size']]\n",
        "df_test_positive = df_test.loc[df_test['Type'] == 1][['Clump Thickness', 'Cell Size']]"
      ],
      "outputs": [],
      "execution_count": 3,
      "metadata": {
        "collapsed": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# 导入matplotlib包中的pyplot用于绘图\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "# 绘制散点图\n",
        "plt.scatter(df_test_negative['Clump Thickness'],df_test_negative['Cell Size'], marker = 'o', s=200, c='red')\n",
        "plt.scatter(df_test_positive['Clump Thickness'],df_test_positive['Cell Size'], marker = 'x', s=150, c='black')\n",
        "\n",
        "# 设定x,y轴标签\n",
        "plt.xlabel('Clump Thickness')\n",
        "plt.ylabel('Cell Size')\n",
        "\n",
        "# 显示\n",
        "plt.show()\n"
      ],
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": [
              "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\n"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 5,
      "metadata": {
        "collapsed": true
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# 导入numpy工具包\n",
        "import numpy as np\n",
        "\n",
        "# 利用numpy中的random函数随机采样直线的截距和系数\n",
        "intercept = np.random.random([1])\n",
        "coef = np.random.random([2])\n",
        "lx = np.arange(0, 12)\n",
        "ly = (-intercept - lx * coef[0]) / coef[1]\n",
        "\n",
        "# 绘制一条随机直线\n",
        "plt.plot(lx, ly, c='yellow')\n",
        "\n",
        "# 随机参数下的二类分类器\n",
        "# 决定直线的走向有两个因素，直线的斜率和截距，我们统称为模型的参数，也是分类器需要通过学习从训练数据中学习到的\n",
        "plt.scatter(df_test_negative['Clump Thickness'],df_test_negative['Cell Size'], marker = 'o', s=200, c='red')\n",
        "plt.scatter(df_test_positive['Clump Thickness'],df_test_positive['Cell Size'], marker = 'x', s=150, c='black')\n",
        "plt.xlabel('Clump Thickness')\n",
        "plt.ylabel('Cell Size')\n",
        "plt.show()"
      ],
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": [
              "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\n"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 6,
      "metadata": {
        "collapsed": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# 导入sklearn中的逻辑回归分类器\n",
        "from sklearn.linear_model import LogisticRegression\n",
        "lr = LogisticRegression()\n",
        "\n",
        "# 利用前10条训练样本学习直线的系数和截距\n",
        "lr.fit(df_train[['Clump Thickness', 'Cell Size']][:10], df_train['Type'][:10])\n",
        "print('Testing accuracy (10 training samples):', lr.score(df_test[['Clump Thickness', 'Cell Size']], df_test['Type']))"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Testing accuracy (10 training samples): 0.868571428571\n"
          ]
        }
      ],
      "execution_count": 7,
      "metadata": {
        "collapsed": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "intercept = lr.intercept_\n",
        "coef = lr.coef_[0, :]\n",
        "\n",
        "# 原本这个分类面应该是 lx * coef[0] + ly * coef[1] + intercept=0,映射到2维平面后是：\n",
        "ly = (-intercept - lx * coef[0]) / coef[1]\n",
        "\n",
        "# 绘制新的分类，我们使用一定量的训练样本，分类器所表现的性能有了大幅度的提升\n",
        "plt.plot(lx, ly, c='green')\n",
        "plt.scatter(df_test_negative['Clump Thickness'],df_test_negative['Cell Size'], marker = 'o', s=200, c='red')\n",
        "plt.scatter(df_test_positive['Clump Thickness'],df_test_positive['Cell Size'], marker = 'x', s=150, c='black')\n",
        "plt.xlabel('Clump Thickness')\n",
        "plt.ylabel('Cell Size')\n",
        "plt.show()"
      ],
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": [
              "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\n"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 8,
      "metadata": {
        "collapsed": true
      }
    },
    {
      "cell_type": "code",
      "source": [
        "#使用所有的训练样本，分类器的性能进一步提升，在测试集上的分类准确性达到93.7%\n",
        "lr = LogisticRegression()\n",
        "\n",
        "lr.fit(df_train[['Clump Thickness', 'Cell Size']], df_train['Type'])\n",
        "print('Testing accuracy (all training samples):', lr.score(df_test[['Clump Thickness', 'Cell Size']], df_test['Type']))"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Testing accuracy (all training samples): 0.937142857143\n"
          ]
        }
      ],
      "execution_count": 9,
      "metadata": {
        "collapsed": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "intercept = lr.intercept_\n",
        "coef = lr.coef_[0, :]\n",
        "ly = (-intercept - lx * coef[0]) / coef[1]\n",
        "\n",
        "plt.plot(lx, ly, c='blue')\n",
        "plt.scatter(df_test_negative['Clump Thickness'],df_test_negative['Cell Size'], marker = 'o', s=200, c='red')\n",
        "plt.scatter(df_test_positive['Clump Thickness'],df_test_positive['Cell Size'], marker = 'x', s=150, c='black')\n",
        "plt.xlabel('Clump Thickness')\n",
        "plt.ylabel('Cell Size')\n",
        "plt.show()"
      ],
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": [
              "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\n"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 9,
      "metadata": {
        "collapsed": true
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "数据下载链接：https://pan.baidu.com/s/1jerIu8TJkf0Ei0RRt2Gt7g 密码：pn5z"
      ],
      "metadata": {
        "collapsed": true
      }
    }
  ],
  "metadata": {
    "kernelspec": {
      "name": "python3",
      "language": "python",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python",
      "version": "3.6.4",
      "mimetype": "text/x-python",
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "pygments_lexer": "ipython3",
      "nbconvert_exporter": "python",
      "file_extension": ".py"
    },
    "kernel_info": {
      "name": "python3"
    },
    "nteract": {
      "version": "0.8.4"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}